/**
 * Generate code from /{{projectName}}-core/src/main/java/{{packageName}}/{{apis}}/dto/{{apiDtos@DEFAULT}}.java.hbs
 */
package cn.ibizlab.api.dto;

import java.util.*;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.alibaba.fastjson.annotation.JSONField;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import cn.ibizlab.util.domain.DTOBase;
import cn.ibizlab.util.domain.DTOClient;
import lombok.*;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * 认证信息[AuthInfoDTO]
 *
 * @author generator
 */
@Getter
@Setter
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel("认证信息DTO")
public class AuthInfoDTO extends DTOBase implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户标识
     */
    @JsonProperty("id")
    @JSONField(name = "id")
    @ApiModelProperty(value = "用户标识", position = 0)
    private String id;

    /**
     * 用户显示名
     */
    @JsonProperty("display_name")
    @JSONField(name = "display_name")
    @ApiModelProperty(value = "用户显示名", position = 1)
    private String displayName;

    /**
     * username/uid
     */
    @JsonProperty("username")
    @JSONField(name = "username")
    @ApiModelProperty(value = "username/uid", position = 2)
    private String username;

    /**
     * DC
     */
    @JsonProperty("dc")
    @JSONField(name = "dc")
    @ApiModelProperty(value = "DC", position = 3)
    private String dc;

    /**
     * 组织机构标识
     */
    @JsonProperty("organization_id")
    @JSONField(name = "organization_id")
    @ApiModelProperty(value = "组织机构标识", position = 4)
    private String organizationId;

    /**
     * 电子邮箱
     */
    @JsonProperty("mail")
    @JSONField(name = "mail")
    @ApiModelProperty(value = "电子邮箱", position = 5)
    private String mail;

    /**
     * 移动电话
     */
    @JsonProperty("mobile")
    @JSONField(name = "mobile")
    @ApiModelProperty(value = "移动电话", position = 6)
    private String mobile;

    /**
     * 头像
     */
    @JsonProperty("avatar")
    @JSONField(name = "avatar")
    @ApiModelProperty(value = "头像", position = 7)
    private String avatar;

    /**
     * 隶属于
     */
    @JsonProperty("member_of")
    @JSONField(name = "member_of")
    @ApiModelProperty(value = "隶属于", position = 8)
    private List<AuthMemberDTO> memberOf;

    /**
     * 授予
     */
    @JsonProperty("grants")
    @JSONField(name = "grants")
    @ApiModelProperty(value = "授予", position = 9)
    private List<AuthGrantedSystemDTO> grants;

    /**
     * 人员编号
     */
    @JsonProperty("employee_number")
    @JSONField(name = "employee_number")
    @ApiModelProperty(value = "人员编号", position = 10)
    private String employeeNumber;

    /**
     * 类型
     */
    @JsonProperty("employee_type")
    @JSONField(name = "employee_type")
    @ApiModelProperty(value = "类型", position = 11)
    private String employeeType;

    /**
     * 职位
     */
    @JsonProperty("title")
    @JSONField(name = "title")
    @ApiModelProperty(value = "职位", position = 12)
    private String title;

    /**
     * 联系电话
     */
    @JsonProperty("telephone_number")
    @JSONField(name = "telephone_number")
    @ApiModelProperty(value = "联系电话", position = 13)
    private String telephoneNumber;

    /**
     * 证件号
     */
    @JsonProperty("identification_number")
    @JSONField(name = "identification_number")
    @ApiModelProperty(value = "证件号", position = 14)
    private String identificationNumber;

    /**
     * 地址
     */
    @JsonProperty("postal_address")
    @JSONField(name = "postal_address")
    @ApiModelProperty(value = "地址", position = 15)
    private String postalAddress;


    /**
     * 设置 [用户显示名]
     */
    public AuthInfoDTO setDisplayName(String displayName) {
        this.displayName = displayName;
        this.modify("display_name", displayName);
        return this;
    }

    /**
     * 设置 [username/uid]
     */
    public AuthInfoDTO setUsername(String username) {
        this.username = username;
        this.modify("username", username);
        return this;
    }

    /**
     * 设置 [DC]
     */
    public AuthInfoDTO setDc(String dc) {
        this.dc = dc;
        this.modify("dc", dc);
        return this;
    }

    /**
     * 设置 [组织机构标识]
     */
    public AuthInfoDTO setOrganizationId(String organizationId) {
        this.organizationId = organizationId;
        this.modify("organization_id", organizationId);
        return this;
    }

    /**
     * 设置 [电子邮箱]
     */
    public AuthInfoDTO setMail(String mail) {
        this.mail = mail;
        this.modify("mail", mail);
        return this;
    }

    /**
     * 设置 [移动电话]
     */
    public AuthInfoDTO setMobile(String mobile) {
        this.mobile = mobile;
        this.modify("mobile", mobile);
        return this;
    }

    /**
     * 设置 [头像]
     */
    public AuthInfoDTO setAvatar(String avatar) {
        this.avatar = avatar;
        this.modify("avatar", avatar);
        return this;
    }

    /**
     * 设置 [隶属于]
     */
    public AuthInfoDTO setMemberOf(List<AuthMemberDTO> memberOf) {
        this.memberOf = memberOf;
        this.modify("member_of", memberOf);
        return this;
    }

    /**
     * 设置 [授予]
     */
    public AuthInfoDTO setGrants(List<AuthGrantedSystemDTO> grants) {
        this.grants = grants;
        this.modify("grants", grants);
        return this;
    }

    /**
     * 设置 [人员编号]
     */
    public AuthInfoDTO setEmployeeNumber(String employeeNumber) {
        this.employeeNumber = employeeNumber;
        this.modify("employee_number", employeeNumber);
        return this;
    }

    /**
     * 设置 [类型]
     */
    public AuthInfoDTO setEmployeeType(String employeeType) {
        this.employeeType = employeeType;
        this.modify("employee_type", employeeType);
        return this;
    }

    /**
     * 设置 [职位]
     */
    public AuthInfoDTO setTitle(String title) {
        this.title = title;
        this.modify("title", title);
        return this;
    }

    /**
     * 设置 [联系电话]
     */
    public AuthInfoDTO setTelephoneNumber(String telephoneNumber) {
        this.telephoneNumber = telephoneNumber;
        this.modify("telephone_number", telephoneNumber);
        return this;
    }

    /**
     * 设置 [证件号]
     */
    public AuthInfoDTO setIdentificationNumber(String identificationNumber) {
        this.identificationNumber = identificationNumber;
        this.modify("identification_number", identificationNumber);
        return this;
    }

    /**
     * 设置 [地址]
     */
    public AuthInfoDTO setPostalAddress(String postalAddress) {
        this.postalAddress = postalAddress;
        this.modify("postal_address", postalAddress);
        return this;
    }


}
